package demo.hw;

/**
 * 描述
 * 给定两个只包含小写字母的字符串，计算两个字符串的最大公共子串的长度。
 * 注：子串的定义指一个字符串删掉其部分前缀和后缀（也可以不删）后形成的字符串。
 *
 * 输入描述：
 * 输入两个只包含小写字母的字符串
 * 输出描述：
 * 输出一个整数，代表最大公共子串的长度
 *
 * 示例1
 * 输入：
 * asdfas
 * werasdfaswer
 * 复制
 * 输出：
 * 6
 *
 * @author taqo
 * @date 2021/5/27
 */
public class _公共子串计算 {
    public static void main(String[] args) {
        String s1 = "asdfas";
        String s2 = "werasdfaswer";

        len(s1,s2);
    }

    private static void len(String s1, String s2) {
        int max = 0;
        int dp[][] = new int[s1.length()][s2.length()];
        for (int i = 0; i < s1.length(); i++) {
            for (int j = 0; j < s2.length(); j++) {
                if (s1.charAt(i) == s2.charAt(j)){
                    if (i>0 &j>0) {
                        dp[i][j] = dp[i-1][j-1]+1;
                        max = Math.max(max,dp[i][j]);
                    }else {
                        dp[i][j] = 1;
                    }
                }else {
                    dp[i][j] = 0;
                }
            }
        }
        System.out.println(max);

    }
}
